import { IPSSysBISchemeObject } from './ipssys-bischeme-object';
import { IPSDataEntity } from '../dataentity/ipsdata-entity';
import { IPSDEField } from '../dataentity/defield/ipsdefield';

/**
 *
 * @export
 * @interface IPSBICube
 */
export interface IPSBICube extends IPSSysBISchemeObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 立方体标记
   * @type {string}
   */
  cubeTag: string;

  /**
   * 立方体标记2
   * @type {string}
   */
  cubeTag2: string;

  /**
   * 键值存储属性
   *
   * @type {IPSDEField}
   */
  getKeyPSDEField(): IPSDEField | null;

  /**
   * 键值存储属性
   *
   * @type {IPSDEField}
   */
  get keyPSDEField(): IPSDEField | null;

  /**
   * 键值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getKeyPSDEFieldMust(): IPSDEField;

  /**
   * 实体
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntity(): IPSDataEntity | null;

  /**
   * 实体
   *
   * @type {IPSDataEntity}
   */
  get psDataEntity(): IPSDataEntity | null;

  /**
   * 实体（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntityMust(): IPSDataEntity;

  /**
   * 类型存储属性
   *
   * @type {IPSDEField}
   */
  getTypePSDEField(): IPSDEField | null;

  /**
   * 类型存储属性
   *
   * @type {IPSDEField}
   */
  get typePSDEField(): IPSDEField | null;

  /**
   * 类型存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTypePSDEFieldMust(): IPSDEField;
}
